#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    pid_t pid;

    // 创建子进程
    pid = fork();

    if (pid < 0) {
        // 出错处理
        perror("fork");
        return 1;
    } else if (pid == 0) {
        // 子进程
        printf("子进程开始执行，PID: %d，父进程PID: %d\n", getpid(), getppid());
        // 让子进程睡眠一段时间，以便观察其成为孤儿进程后的情况
        sleep(5);
        printf("子进程结束，PID: %d，父进程PID: %d\n", getpid(), getppid());
    } else {
        // 父进程
        printf("父进程开始执行，PID: %d，子进程PID: %d\n", getpid(), pid);
        // 父进程先于子进程结束
        return 0;
    }

    return 0;
}
